#ifndef __MANAGEMENT__H
#define __MANAGEMENT__H


//头文件--------------------------
#include <stdio.h>
#include <stdlib.h> 
#include <errno.h>
#include <unistd.h> 
#include <string.h>  
#include <fcntl.h>
#include <signal.h>
#include <pthread.h>
#include <sqlite3.h>
#include <arpa/inet.h>  
#include <sys/types.h>
#include <sys/socket.h>  
#include <netinet/in.h>   



//宏定义--------------------------
#define MEMSQ "datamembase"         //数据库名字
#define ADMINIUR "adminiusermsg"     //管理员用户名密码表名称
#define DOMEUR "domeusermsg"         //普通用户名密码表
#define MEMINFO "membermsg"          //员工信息表
#define ERRMSGS(errmsg) do{\
                            perror(errmsg);\
                            printf("%s-%s-%d\n", __FILE__, __func__, __LINE__);\
                            exit(1);\
                            }while(0)
#define S 128 
#define N 32 

//结构体--------------------------
//员工信息结构体
struct memsg{                      
	int number;         //工号
	char name[32];  	 //姓名
	char sex;            //性别 （M男  W女）
	int old;             //年龄
	int salary;           //工资
};
typedef struct memsg MEMSG;

//客户端信息结构体	
//操作码： 0.退出  1.注册管理员用户  2.注册普通用户  3.管理员用户登录 
//   4，普通用户登录   5，查询   6，修改   7，添加    8，删除   	
struct clmsg{              
	int code;                     
	char us_name[32];              // 用户名
	char us_pswd[128];             // 密码
	struct memsg member;           // 员工信息结构体
};
typedef struct clmsg CLMSG;

//服务器信息结构体	
//操作码：0，失败    1，成功     2，正常数据    3，数据传送完毕	
struct semsg{          
	int code;         
	char msg[500];
};
typedef struct semsg SEMSG;

//线程传参体
typedef struct{
	int clientfd;			//客户端描述符
	struct sockaddr_in clientaddr;   //客户端地址
}THREADMSG;


//函数声明-------------------------
void *Thread_oneFun(void *arg);    //线程函数
int Sq_create();    //创建数据库
int Sq_install_AD(struct clmsg msdata);		//数据库注册管理员用户
int Sq_install_DM(struct clmsg msdata);		//数据库注册普通用户
int Sq_check_DM(struct clmsg msdata);		//数据库对比普通用户账号信息
int Sq_check_AD(struct clmsg msdata);		//数据对比管理用户账号信息
int Sq_show_MEM(char ***data,int *nrow,int *ncolumn);   //数据查询员工信息
int Sq_change_MEM(struct clmsg msdata);		//数据库修改员工信息
int Sq_install_MEM(struct clmsg msdata);	//数据库插入员工信息
int Sq_del_MEM(struct clmsg msdata);		//数据库删除员工信息
void Print_welcome1(struct clmsg *clmsg);	//客户端登录界面
void Print_welcome2(struct clmsg *clmsg);	//客户端管理员登录界面
void Print_welcome3(struct clmsg *clmsg);	//客户端员工登录界面
int Inputret();		//获取操作码
void Administer_reguster(int sockfd,struct clmsg*clmsg);	//客户端注册管理员账号
int Administer_login(int sockfd,struct clmsg*clmsg);		//客户端管理员登录
void Men_install(int sockfd,struct clmsg *clmsg);			//客户端添加员工信息
void Mem_change(int sockfd,struct clmsg*clmsg);				//客户端修改员工信息
void Mem_edelete(int sockfd,struct clmsg*clmsg);			//客户端删除员工信息
void Mem_dataShow(int sockfd,struct clmsg*clmsg);			//客户端查询员工信息
void server_add(int sockfd,struct semsg*semsg,struct clmsg clmsg);		//服务器注册管理员账号
void server_check(int sockfd,struct semsg*semsg,struct clmsg clmsg);	//服务器管理员登录
void server_install(int sockfd,struct semsg*semsg,struct clmsg clmsg);	//服务器添加员工信息
void server_change(int sockfd,struct semsg*semsg,struct clmsg clmsg);	//服务器修改员工信息
void server_del(int sockfd,struct semsg *semsg,struct clmsg clmsg);		//服务器删除员工信息
void server_show(int sockfd,struct semsg*semsg);			//服务器查询员工信息





#endif // !__MANAGEMENT__H
